#pragma once
#include <iostream>
#include <string>
#include <map>
#include <set>
#include <fstream>
#include <sstream>
#include <vector>
#include <utility>  // 包含 make_pair 函数

using namespace std;

class Dictionary
{

public:

    void initDictCh(const string &dictPathCh);
    void initDictEn(const string &dictPathEn);

    void initIndexCh(const string &indexPathCh);
    void initIndexEn(const string &indexPathEn);

    vector<pair<string,int>>& getDictCh();
    vector<pair<string,int>>& getDictEn();

    map<string,set<int>>& getIndexCh();
    map<string,set<int>>& getIndexEn();
    //vector<pair<string,int>>& getFinRes();

    map<string,set<int>>findWord(const char ch,map<string,set<int>> _index);

    vector<pair<string,int>>& doAndQuery(const string & str);
    
    bool isChinese(const char ch);
    bool isEnglish(const char ch);
private:
    vector<pair<string,int>> _dictCh;
    map<string,set<int>> _indexCh;
    vector<pair<string,int>> _dictEn;
    map<string,set<int>> _indexEn;
    vector<pair<string,int>> _RecWord;
};

